package entidades;

import util.*;
import java.util.List;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import com.google.gson.Gson;

/**
 *
 * @author JFM
 */
public class Permiso extends Entidad
	{
	static String NOMBRE_TABLA = "permisos";

	private String lugar;
	private String accion;

	public Permiso()
		{
		id = 0;
		lugar = "";
		accion = "";
		}



	/* --- Metodos set() y get() --- */

	public String getNombreTabla()
		{ return NOMBRE_TABLA; }

	public String getLugar()
		{ return lugar; }
	public void setLugar(String lugar)
		{ this.lugar = (lugar != null)? lugar : ""; }

	public String getAccion()
		{ return accion; }
	public void setAccion(String accion)
		{ this.accion = (accion != null)? accion : ""; }

	@Override
	public String getDescriptor()
		{ return lugar + " (" + accion + ")"; }

	@Override
	public String toJson()
		{
		HashMap map = new HashMap();
		map.put("id", id);
		map.put("lugar", lugar);
		map.put("accion", accion);
		return new Gson().toJson(map);
		}

	/* --- Metodos MySQL --- */

	@Override
	public void cargar() throws SQLException
		{
        ResultSet result = MySQL.executeQuery("SELECT * FROM "+NOMBRE_TABLA+" WHERE id = " + getId());

		if(result.next())
			{ leer(result); }

		result.getStatement().close();
		}

	@Override
	public void guardar() throws SQLException
		{ throw new UnsupportedOperationException("Not supported yet."); }

	public void leer(ResultSet result, String prefijo) throws SQLException
		{
		setId( result.getInt(prefijo + "id") );
		setLugar( result.getString(prefijo + "lugar") );
		setAccion( result.getString(prefijo + "accion") );
		}

	public static List<Permiso> listar() throws SQLException
		{ return (List) Entidad.listar(Permiso.class, NOMBRE_TABLA, "lugar ASC, accion ASC"); }



	/* --- Metodos varios --- */

	@Override
	public String toString()
		{ return id + ": " + lugar + " - " + accion; }



	/* --- Pruebas --- */

	public static void main(String args[]) throws Exception
		{
		Permiso tu = new Permiso();
		tu.setId(1);
		tu.cargar();
		System.out.println(tu);

		System.out.println("----------------");

		List<Permiso> lista = Permiso.listar();
		for(int i=0; i<lista.size(); i++)
			{ System.out.println(lista.get(i)); }
		}
	}
